Horizontal navigation
Allow users to quickly access essential site-wide utilities and global actions via a persistent, top-level navigation element that also reinforces brand identity
#Examples
This layout is the standard for Siteimprove products and integrations.
Composition:
- Logo: Reinforces brand identity and provides a link back to the homepage.
- Actions: Provide quick access to essential system-level actions (e.g. Sign out, Notifications, Profile, Settings, Account switching) through the usage of Buttons and ActionMenus.
- Skip to content: ( ): The "Skip to content" link allows keyboard users to navigate directly to the main content using the "Tab" key.
Learn more about the actions prop in the Actions example below.
return (
<HorizontalNavigation
appLogo={{
icon: props.theme === "agentic-ai-2025" ? siteImproveLogoAgenticAi2025 : siteImproveLogo,
href: "https://my2.siteimprove.com",
title: "Go to main page",
"aria-label": "Siteimprove",
"data-observe-key": "top-nav-company-link",
}}
actions={actionsDummyData}
data-observe-key="top-nav"
skipToContentId="properties"
/>
);#Title
The title prop will add a title in the h1 element right after the logo.
Learn more about the actions prop in the Actions example below.
<HorizontalNavigation
appLogo={{
icon: props.theme === "agentic-ai-2025" ? siteImproveLogoAgenticAi2025 : siteImproveLogo,
href: "https://my2.siteimprove.com",
title: "Go to main page",
"aria-label": "Siteimprove",
"data-observe-key": "top-nav-company-link",
}}
title="Page Report"
actions={actionsDummyData}
data-observe-key="top-nav"
skipToContentId="properties"
/>#Actions
The actions prop will render either ActionMenus or Buttons depending on what values you pass to it. To render an ActionMenu you pass ActionMenuProps. To render a Button you can pass the following props from the ButtonProps type: children, onClick, href and openNew plus optionally the following props from the TooltipProps type to render a tooltip for the button: content and placement.
<HorizontalNavigation
appLogo={{
icon: props.theme === "agentic-ai-2025" ? siteImproveLogoAgenticAi2025 : siteImproveLogo,
href: "https://my2.siteimprove.com",
title: "Go to main page",
"aria-label": "Siteimprove",
"data-observe-key": "top-nav-company-link",
}}
actions={[
{
items: [
{
text: "Users",
onClick: () => console.log("clicked"),
"data-observe-key": "top-nav-users",
},
ActionMenu.divider,
{ text: "Sites", href: "https://siteimprove.com", "data-observe-key": "top-nav-sites" },
{ text: "Groups", href: "https://siteimprove.com", "data-observe-key": "top-nav-groups" },
ActionMenu.divider,
{ text: "Report", href: "https://siteimprove.com", "data-observe-key": "top-nav-report" },
ActionMenu.divider,
{
text: "Subscriptions",
href: "https://siteimprove.com",
"data-observe-key": "top-nav-subscriptions",
},
ActionMenu.divider,
{
text: "All settings",
href: "https://siteimprove.com",
"data-observe-key": "top-nav-all-settings",
},
],
buttonContent: (
<Icon>
<IconSettings />
</Icon>
),
"data-observe-key": "top-nav-settings",
"aria-label": "Settings",
tooltip: "Settings",
},
{
href: "https://siteimprove.com",
children: (
<Icon>
<IconHelpOutline />
</Icon>
),
tooltip: "Help and training",
"data-observe-key": "top-nav-help",
"aria-label": "Help and training",
},
{
onClick: () => console.log("clicked"),
children: (
<Icon>
<IconMyProfile />
</Icon>
),
"data-observe-key": "top-nav-profile",
"aria-label": "Profile",
},
]}
data-observe-key="top-nav"
skipToContentId="properties"
/>#Properties
#Guidelines
#Best practices
#Do not use when
#Accessibility
Explore detailed guidelines for this component: Accessibility Specifications